{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f04dd603-a2d1-48ce-8c17-9f1dba8de1ee",
   "metadata": {},
   "source": [
    "Chapter 02\n",
    "\n",
    "# 矩阵的索引切片\n",
    "《线性代数，初阶》 | 鸢尾花书：数学不难"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ccafb456-2453-4c82-8a65-b1963a370cb2",
   "metadata": {},
   "source": [
    "该代码的核心内容是对一个随机生成的矩阵$A$进行操作，包括可视化、行列索引、单个元素提取以及主对角线提取。我们可以从数学角度详细描述其实现原理。\n",
    "\n",
    "---\n",
    "\n",
    "### **1. 初始化**\n",
    "代码首先导入了必要的库：\n",
    "- `numpy` 用于数值计算\n",
    "- `seaborn` 用于数据可视化\n",
    "- `matplotlib.pyplot` 也是用于可视化，通常与 `seaborn` 配合使用\n",
    "\n",
    "---\n",
    "\n",
    "### **2. 矩阵 $A$ 的生成**\n",
    "设 $A$ 为 $5 \\times 12$ 的整数矩阵，其元素范围在 $[0,10)$ 内：\n",
    "\n",
    "$$\n",
    "A = \\begin{bmatrix}\n",
    "a_{1,1} & a_{1,2} & \\dots & a_{1,12} \\\\\n",
    "a_{2,1} & a_{2,2} & \\dots & a_{2,12} \\\\\n",
    "\\vdots & \\vdots & \\ddots & \\vdots \\\\\n",
    "a_{5,1} & a_{5,2} & \\dots & a_{5,12}\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "其中，$a_{i,j} \\in \\{0,1,2,\\dots,9\\}$，由 `np.random.randint(0, 10, (5, 12))` 生成。\n",
    "\n",
    "---\n",
    "\n",
    "### **3. 矩阵属性**\n",
    "- `A.shape` 返回矩阵的形状，即 $(5,12)$\n",
    "- `A.ndim` 返回矩阵的维度，即 $2$（表示这是一个二维矩阵）\n",
    "\n",
    "---\n",
    "\n",
    "### **4. 矩阵可视化**\n",
    "代码使用 `sns.heatmap` 可视化矩阵 $A$，其中：\n",
    "- `cmap='RdYlBu_r'` 表示颜色映射采用红-黄-蓝的反向配色方案\n",
    "- `square=True` 使得每个单元格为正方形\n",
    "- `linecolor='w'` 和 `linewidths=0.25` 设定网格线颜色与宽度\n",
    "\n",
    "---\n",
    "\n",
    "### **5. 行索引**\n",
    "从矩阵 $A$ 提取特定行：\n",
    "- `A[[0],:]` 提取第一行，返回的是一个 **二维数组**，形状为 $(1,12)$\n",
    "- `A[0,:]` 提取第一行，返回的是一个 **一维数组**，形状为 $(12,)$\n",
    "- `A[[1],:]` 提取第二行，返回 $(1,12)$ 维度的数组\n",
    "- `A[[-1],:]` 提取最后一行，即第五行，返回 $(1,12)$ 维度的数组\n",
    "\n",
    "数学上，行索引可以表示为：\n",
    "$$\n",
    "A[i,:] = \\begin{bmatrix} a_{i,1} & a_{i,2} & \\dots & a_{i,12} \\end{bmatrix}\n",
    "$$\n",
    "\n",
    "---\n",
    "\n",
    "### **6. 列索引**\n",
    "从矩阵 $A$ 提取特定列：\n",
    "- `A[:,[0]]` 提取第一列，返回一个 **二维数组**，形状为 $(5,1)$\n",
    "- `A[:,0]` 提取第一列，返回一个 **一维数组**，形状为 $(5,)$\n",
    "- `A[:,[1]]` 提取第二列，返回 $(5,1)$ 维度的数组\n",
    "- `A[:,[-1]]` 提取最后一列，返回 $(5,1)$ 维度的数组\n",
    "\n",
    "数学上，列索引可以表示为：\n",
    "$$\n",
    "A[:,j] = \\begin{bmatrix} a_{1,j} \\\\ a_{2,j} \\\\ \\vdots \\\\ a_{5,j} \\end{bmatrix}\n",
    "$$\n",
    "\n",
    "---\n",
    "\n",
    "### **7. 元素访问**\n",
    "代码使用 `(row_idx, col_idx)` 方式访问矩阵中的单个元素。例如：\n",
    "- `A[0,0]` 访问第 $1$ 行，第 $1$ 列的元素，即 $a_{1,1}$\n",
    "- `A[2,7]` 访问第 $3$ 行，第 $8$ 列的元素，即 $a_{3,8}$\n",
    "- `A[2,-1]` 访问第 $3$ 行，最后一列的元素，即 $a_{3,12}$\n",
    "- `A[-1,-1]` 访问最后一行，最后一列的元素，即 $a_{5,12}$\n",
    "\n",
    "数学表示：\n",
    "$$\n",
    "a_{i,j} = A[i, j]\n",
    "$$\n",
    "\n",
    "---\n",
    "\n",
    "### **8. 主对角线**\n",
    "代码使用 `np.diag(A)` 提取矩阵的主对角线，即：\n",
    "$$\n",
    "\\text{diag}(A) = \\begin{bmatrix} a_{1,1} & a_{2,2} & a_{3,3} & a_{4,4} & a_{5,5} \\end{bmatrix}\n",
    "$$\n",
    "这是一维数组，形状为 $(5,)$。\n",
    "\n",
    "使用 `np.diag(np.diag(A))` 构造对角矩阵：\n",
    "$$\n",
    "D = \\begin{bmatrix}\n",
    "a_{1,1} & 0 & 0 & 0 & 0 \\\\\n",
    "0 & a_{2,2} & 0 & 0 & 0 \\\\\n",
    "0 & 0 & a_{3,3} & 0 & 0 \\\\\n",
    "0 & 0 & 0 & a_{4,4} & 0 \\\\\n",
    "0 & 0 & 0 & 0 & a_{5,5}\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "该矩阵只保留了 $A$ 的主对角线元素，其他位置填充为 $0$。\n",
    "\n",
    "---\n",
    "\n",
    "### **总结**\n",
    "- 代码主要处理一个 $5 \\times 12$ 的随机整数矩阵，使用 `numpy` 进行索引和元素访问，并使用 `seaborn` 可视化矩阵。\n",
    "- 代码展示了如何提取特定行、列、单个元素以及主对角线元素，并使用数学公式解释了每个操作的含义。\n",
    "\n",
    "这样，你可以清晰地理解代码的数学本质！"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ebb4b0d0-a69c-4a8b-b72d-6fb98543d826",
   "metadata": {},
   "source": [
    "## 初始化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1ba08a7e-5c56-4323-9fac-7488a92ab416",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc3e2c0d-92cd-4aee-a476-91820e7f1ac3",
   "metadata": {},
   "source": [
    "## 创建矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "08fff1ef-ced6-4755-9b25-4c8cb34b2bd8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[8, 0, 1, 4, 5, 1, 0, 5, 0, 2, 1, 4],\n",
       "       [7, 9, 7, 7, 6, 6, 3, 1, 0, 8, 6, 0],\n",
       "       [0, 5, 7, 5, 3, 9, 5, 3, 7, 3, 9, 3],\n",
       "       [8, 5, 0, 6, 4, 0, 2, 2, 5, 9, 2, 5],\n",
       "       [6, 6, 1, 1, 8, 6, 1, 2, 1, 7, 4, 3]])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.seed(88)  # 保证每次运行生成相同的随机数\n",
    "A = np.random.randint(0, 10, (5, 12))\n",
    "# 生成一个 5×12 的随机整数矩阵（数值范围 0~10）\n",
    "A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "62f9abc9-7568-4961-a52f-f109bf33d2c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "A.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "754dcc53-2d55-40c0-a0e1-9b6dec3c4df5",
   "metadata": {},
   "outputs": [],
   "source": [
    "A.ndim"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48358c22-d40b-4dc6-b479-04664ca3d46b",
   "metadata": {},
   "source": [
    "## 可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "54e8a73b-838c-4fbb-a1d8-25b5c4d4d8a4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(A, cmap = 'RdYlBu_r', square = True, \n",
    "            linecolor = 'w', linewidths = 0.25)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5534f2d1-4389-4a94-8714-d17233ef2890",
   "metadata": {},
   "source": [
    "## 行索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "cf427af7-1a2e-44d1-b15b-57eec613c2c4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6, 3, 7, 4, 6, 9, 2, 6]])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_row_1 = A[[0],:]\n",
    "# 结果为二维数组\n",
    "a_row_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "c792dc53-2c97-4ac4-8263-69176a7761ad",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([6, 3, 7, 4, 6, 9, 2, 6])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A[0,:]\n",
    "# 结果为一维数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7aaa6f94-359a-4bab-8346-11f2129cee42",
   "metadata": {},
   "outputs": [],
   "source": [
    "a_row_2 = A[[1],:]\n",
    "# 结果为二维数组\n",
    "a_row_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "e8c3bb91-ea0a-4e4d-933a-97d6e93c2531",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6, 6, 1, 1, 8, 6, 1, 2, 1, 7, 4, 3]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_row_5 = A[[-1],:]\n",
    "a_row_5"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5443b7e1-aba9-4991-8ae7-e587ee74b3bb",
   "metadata": {},
   "source": [
    "## 列索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "94686bc6-0711-4b16-9409-e757ea9cb2f1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[8],\n",
       "       [7],\n",
       "       [0],\n",
       "       [8],\n",
       "       [6]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_col_1 = A[:,[0]]\n",
    "# 结果为二维数组\n",
    "a_col_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "5d887a43-14b9-42a5-856a-690f8a715393",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([8, 7, 0, 8, 6])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "fd839127-072d-4ea1-bc1f-3d1ca040612c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0],\n",
       "       [9],\n",
       "       [5],\n",
       "       [5],\n",
       "       [6]])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_col_2 = A[:,[1]]\n",
    "# 结果为二维数组\n",
    "a_col_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "e449fdff-8c86-4656-824c-04bb7309ef65",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 9, 5, 5, 6])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "0f63973e-9285-47da-ba83-790074b9ce43",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[4],\n",
       "       [0],\n",
       "       [3],\n",
       "       [5],\n",
       "       [3]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_col_12 = A[:,[-1]]\n",
    "# 结果为二维数组\n",
    "a_col_12"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "afc401e3-4c95-4d14-965b-b906eacab44b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([4, 0, 3, 5, 3])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A[:,-1]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "45a65725-3020-4a25-839b-b7ecde2ef8ae",
   "metadata": {},
   "source": [
    "## 元素"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "771fb6cc-aa76-4f9b-ac35-3c42f4d1902a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "row_idx, col_idx = 0, 0\n",
    "# 第1行、第1列元素\n",
    "a_1_1 = A[row_idx, col_idx]\n",
    "a_1_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "2ab8ece6-5b14-4d05-9d1b-d0da9763a618",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "row_idx, col_idx = 2, 7\n",
    "# 第3行、第8列元素\n",
    "a_3_8 = A[row_idx, col_idx]\n",
    "a_3_8"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "b64a14f5-2c71-4050-b306-8188762d97c8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_3_12 = A[2, -1]\n",
    "# 第3行、第12列 (最后一列）\n",
    "a_3_12"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "4f0352a8-2f91-4e62-af38-fd5880213b81",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "row_idx, col_idx = -1, -1\n",
    "# 第5行 (最后一行)、第8列元素 (最后一列)\n",
    "a_5_12 = A[row_idx, col_idx]\n",
    "a_5_12"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1ab8ceb3-0ee1-499c-95fc-7542116e82fe",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "7f740366-2370-48cd-85f0-ff706279a63e",
   "metadata": {},
   "source": [
    "## 主对角线元素"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "dc354fa1-fa17-43b1-a480-a0790630a4e2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([8, 9, 7, 6, 8])"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.diag(A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "7503c888-4567-4d19-b3eb-ea3c94452e2a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[8, 0, 0, 0, 0],\n",
       "       [0, 9, 0, 0, 0],\n",
       "       [0, 0, 7, 0, 0],\n",
       "       [0, 0, 0, 6, 0],\n",
       "       [0, 0, 0, 0, 8]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.diag(np.diag(A))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ba7d3a18-e20a-497c-a401-e15eb80a2e17",
   "metadata": {},
   "source": [
    "作者\t**生姜DrGinger**  \n",
    "脚本\t**生姜DrGinger**  \n",
    "视频\t**崔崔CuiCui**  \n",
    "开源资源\t[**GitHub**](https://github.com/Visualize-ML)  \n",
    "平台\t[**油管**](https://www.youtube.com/@DrGinger_Jiang)\t\t\n",
    "\t\t[**iris小课堂**](https://space.bilibili.com/3546865719052873)\t\t\n",
    "\t\t[**生姜DrGinger**](https://space.bilibili.com/513194466)  "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:base] *",
   "language": "python",
   "name": "conda-base-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
